home *** CD-ROM | disk | FTP | other *** search
Text File | 1990-07-11 | 25.7 KB | 909 lines | [TEXT/MPS ] |
- {---------- Methods for TTextHandler ----------}
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetDesignDocument: TDesignDocument;
- BEGIN
- GetDesignDocument:= fDesignDocument;
- END; {TTextHandler.GetDesignDocument}
-
- {$S ATextHandler}
- PROCEDURE TTextHandler.SetDesignDocument(theDesignDoc: TDesignDocument);
-
- BEGIN
- fDesignDocument:= theDesignDoc;
- END; {TTextHandler.SetDesignDocument}
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetLanguage:Integer;
- BEGIN
- GetLanguage:= fLanguage;
- END; {TTextHandler.GetLanguage}
-
- {$S ATextHandler}
- PROCEDURE TTextHandler.SetLanguage(theLanguage: Integer);
- BEGIN
- fLanguage:= theLanguage;
- END; {TTextHandler.SetLanguage}
-
- {$S ATextHandler}
- PROCEDURE TTextHandler.ITTextHandler(theDesignDoc: TDesignDocument);
-
- BEGIN
- SELF.SetDesignDocument(theDesignDoc);
- SELF.SetLanguage(kInPascal);
- SELF.ReadInTypeTable;
- END; {TTextHandler.ITTextHandler}
-
- {$S ATextHandler}
- PROCEDURE TTextHandler.Replace(VAR origString: str255; pattern, replacement: str255);
-
- VAR
- theIndex,
- theLength: INTEGER;
-
- BEGIN
- theIndex:= Pos(pattern, origString);
- theLength:= Length(pattern);
- WHILE theIndex <> 0 DO
- BEGIN
- Delete(origString, theIndex, theLength);
- Insert(replacement, origString, theIndex);
- theIndex:= Pos(pattern, origString);
- END;
- END; {TTextHandler.Replace}
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetAndEntabRsrcString(itsResourceID:Integer):Str255;
- VAR
- aStringHandle: StringHandle;
- aString : Str255;
-
- BEGIN
- IF SELF.GetLanguage = kInCPP THEN itsResourceID := itsResourceID + 1000;
- aStringHandle:= GetString(itsResourceID);
- FailResError;
- aString:=aStringHandle^^;
- SELF.Replace(aString, '^TAB', gOneTabStr);
- GetAndEntabRsrcString:= aString;
- END;
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetTypeDefStr(theCard:TCard):Str255;
- VAR
- aClassItem, aSuperClassItem : TItem;
- aString : Str255;
-
- BEGIN
- aClassItem:= theCard.GetTheClass;
- aSuperClassItem:= theCard.GetTheSuperClass;
- aString:= GetAndEntabRsrcString(kTypeDefID);
- SELF.Replace(aString, '^0', aClassItem.GetTheName);
- SELF.Replace(aString, '^1', aSuperClassItem.GetTheName);
- GetTypeDefStr:=aString;
- END;
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetHeadingStr:Str255;
- VAR
- theTitle, aString : Str255;
-
- BEGIN
- aString:= GetAndEntabRsrcString(kHeadingID);
- theTitle:= fDesignDocument.GetUnitName;
- SELF.CheckFileName(theTitle);
- (*SLIMEY MUCK*)
- SELF.Replace(aString, '^0', theTitle);
- GetHeadingStr:=aString;
- END;
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetFieldsInterfaceStr:Str255;
-
- BEGIN
- GetFieldsInterfaceStr:= GetAndEntabRsrcString(kFieldsInterfaceID);
- END;
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetMethodsInterfaceStr:Str255;
-
- BEGIN
- GetMethodsInterfaceStr:= GetAndEntabRsrcString(kMethodsInterfaceID);
- END;
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetCollaboratorsInterfaceStr:Str255;
-
- BEGIN
- GetCollaboratorsInterfaceStr:= GetAndEntabRsrcString(kCollaboratorsInterfaceID);
- END;
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetEndOfTypeDefStr:Str255;
-
- BEGIN
- GetEndOfTypeDefStr:= GetAndEntabRsrcString(kEndOfTypeDefID);
- END;
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetStdMethStr(TheMethodItem:TMethodItem):Str255;
- VAR
- theCard: TCard;
- theClass: TItem;
- theClassName: str255;
- aString: str255;
-
- BEGIN
- theCard:= TheMethodItem.GetTheCard;
- theClass:= theCard.GetTheClass;
- theClassName:= theClass.GetTheItem;
- aString:= GetAndEntabRsrcString(kStdMethID);
- SELF.Replace(aString, '^0', theClassName);
- SELF.Replace(aString, '^1', TheMethodItem.GetTheItem);
- GetStdMethStr:=aString;
- END;
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetOverrideMethStr(TheMethodItem:TMethodItem):Str255;
- VAR
- theCard: TCard;
- theClass: TItem;
- theClassName: str255;
- aString: str255;
-
- BEGIN
- theCard:= TheMethodItem.GetTheCard;
- theClass:= theCard.GetTheClass;
- theClassName:= theClass.GetTheItem;
- aString:= GetAndEntabRsrcString(kOverrideMethID);
- SELF.Replace(aString, '^0', theClassName);
- SELF.Replace(aString, '^1', TheMethodItem.GetTheItem);
- GetOverrideMethStr:=aString
- END;
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetStdImplMethStr(TheMethodItem:TMethodItem):Str255;
- VAR
- theCard: TCard;
- theClass: TItem;
- theClassName: str255;
- aString: str255;
-
- BEGIN
- theCard:= TheMethodItem.GetTheCard;
- theClass:= theCard.GetTheClass;
- theClassName:= theClass.GetTheItem;
- aString:= GetAndEntabRsrcString(kStdImplMethID);
- SELF.Replace(aString, '^0', theClassName);
- SELF.Replace(aString, '^1', TheMethodItem.GetTheItem);
- GetStdImplMethStr:=aString;
- END;
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetOverrideImplMethStr(TheMethodItem:TMethodItem):Str255;
- VAR
- theCard: TCard;
- theClass: TItem;
- theClassName: str255;
- aString: str255;
-
- BEGIN
- theCard:= TheMethodItem.GetTheCard;
- theClass:= theCard.GetTheClass;
- theClassName:= theClass.GetTheItem;
- aString:= GetAndEntabRsrcString(kOverrideImplMethID);
- SELF.Replace(aString, '^0', theClassName);
- SELF.Replace(aString, '^1', TheMethodItem.GetTheItem);
- GetOverrideImplMethStr:=aString
- END;
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetGetAccessorStr(TheAccessorItem:TAccessorItem):Str255;
- VAR
- theCard: TCard;
- aString : Str255;
- theClass: TItem;
-
- BEGIN
- theCard:= TheAccessorItem.GetTheCard;
- theClass:= theCard.GetTheClass;
- aString:= GetAndEntabRsrcString(kGetAccessorID);
- SELF.Replace(aString, '^0', theClass.GetTheItem);
- SELF.Replace(aString, '^1', TheAccessorItem.GetTheItem);
- SELF.Replace(aString, '^2', TheAccessorItem.GetFieldAccessed.GetItemType);
- IF TheAccessorItem.fFieldAccessed.GetPassByAddress THEN
- SELF.Replace(aString, '^4', '*')
- ELSE
- SELF.Replace(aString, '^4', kEmptyString);
- GetGetAccessorStr:=aString;
- END;
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetSetAccessorStr(TheAccessorItem:TAccessorItem):Str255;
- VAR
- theCard: TCard;
- aString : Str255;
- theClass: TItem;
-
- BEGIN
- theCard:= TheAccessorItem.GetTheCard;
- theClass:= theCard.GetTheClass;
- aString:= GetAndEntabRsrcString(kSetAccessorID);
- SELF.Replace(aString, '^0', theClass.GetTheItem);
- SELF.Replace(aString, '^1', TheAccessorItem.GetTheItem);
- SELF.Replace(aString, '^2', TheAccessorItem.GetFieldAccessed.GetItemType);
- SELF.Replace(aString, '^3', TheAccessorItem.GetParameter);
- IF TheAccessorItem.fFieldAccessed.GetPassByAddress THEN
- SELF.Replace(aString, '^4', '*')
- ELSE
- SELF.Replace(aString, '^4', kEmptyString);
- GetSetAccessorStr:=aString;
- END;
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetImplGetAccessorStr(TheAccessorItem:TAccessorItem):Str255;
- VAR
- theCard: TCard;
- aString : Str255;
- theClass: TItem;
-
- BEGIN
- theCard:= TheAccessorItem.GetTheCard;
- theClass:= theCard.GetTheClass;
- aString:= GetAndEntabRsrcString(kImplGetAccessorID);
- SELF.Replace(aString, '^0', theClass.GetTheItem);
- SELF.Replace(aString, '^1', TheAccessorItem.GetTheItem);
- SELF.Replace(aString, '^2', TheAccessorItem.GetFieldAccessed.GetItemType);
- IF TheAccessorItem.fFieldAccessed.GetPassByAddress THEN
- SELF.Replace(aString, '^4', '*')
- ELSE
- SELF.Replace(aString, '^4', kEmptyString);
- GetImplGetAccessorStr:=aString;
- END;
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetImplSetAccessorStr(TheAccessorItem:TAccessorItem):Str255;
- VAR
- theCard: TCard;
- aString : Str255;
- theClass: TItem;
-
- BEGIN
- theCard:= TheAccessorItem.GetTheCard;
- theClass:= theCard.GetTheClass;
- aString:= GetAndEntabRsrcString(kImplSetAccessorID);
- SELF.Replace(aString, '^0', theClass.GetTheItem);
- SELF.Replace(aString, '^1', TheAccessorItem.GetTheItem);
- SELF.Replace(aString, '^2', TheAccessorItem.GetFieldAccessed.GetItemType);
- SELF.Replace(aString, '^3', TheAccessorItem.GetParameter);
- IF TheAccessorItem.fFieldAccessed.GetPassByAddress THEN
- SELF.Replace(aString, '^4', '*')
- ELSE
- SELF.Replace(aString, '^4', kEmptyString);
- GetImplSetAccessorStr:=aString;
- END;
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetImplementationStr:Str255;
-
- BEGIN
- GetImplementationStr:= GetAndEntabRsrcString(kImplementationID);
- END;
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetUnitEndStr:Str255;
- VAR
- aString : Str255;
-
- BEGIN
- GetUnitEndStr:= GetAndEntabRsrcString(kUnitEndStr);
- END;
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetImplementationNoteStr(TheCard:TCard):Str255;
- VAR
- aClassItem: TItem;
- aString : Str255;
-
- BEGIN
- aClassItem:= TheCard.GetTheClass;
- aString:= GetAndEntabRsrcString(kImplementationNoteID);
- SELF.Replace(aString, '^0', aClassItem.GetTheItem);
- GetImplementationNoteStr:=aString;
- END;
-
- FUNCTION TTextHandler.GetImplIncFileStr:Str255;
- VAR
- theTitle, aString : Str255;
-
- BEGIN
- theTitle:=fDesignDocument.GetUnitName;
- aString:= GetAndEntabRsrcString(kImplIncFilesID);
- SELF.Replace(aString, '^0', SELF.GetInterfaceFileName(theTitle));
- GetImplIncFileStr:=aString;
- END; {TTextHandler.GetImplIncFileStr}
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetGetAccessorImplementation(TheGetAccessorItem:TGetAccessorItem):Str255;
- VAR
- aString: str255;
- theClass: TItem;
- theClassName: str255;
- BEGIN
- theClass:= TheGetAccessorItem.GetTheCard.GetTheClass;
- theClassName:= theClass.GetTheItem;
- aString:= GetAndEntabRsrcString(kGetAccessorImplementationID);
- SELF.Replace(aString, '^0', TheGetAccessorItem.GetTheImplDeclaration);
- SELF.Replace(aString, '^1', TheGetAccessorItem.GetTheItem);
- SELF.Replace(aString, '^2', TheGetAccessorItem.GetFieldAccessed.GetTheFieldStr);
- GetGetAccessorImplementation:=aString;
- END;
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetSetAccessorImplementation(TheSetAccessorItem:TSetAccessorItem):Str255;
- VAR
- aString: str255;
- theClass: TItem;
- theClassName: str255;
- BEGIN
- theClass:= TheSetAccessorItem.GetTheCard.GetTheClass;
- theClassName:= theClass.GetTheItem;
- aString:= GetAndEntabRsrcString(kSetAccessorImplementationID);
- SELF.Replace(aString, '^0', TheSetAccessorItem.GetTheImplDeclaration);
- SELF.Replace(aString, '^1', TheSetAccessorItem.GetFieldAccessed.GetTheFieldStr);
- SELF.Replace(aString, '^2', TheSetAccessorItem.GetParameter);
- GetSetAccessorImplementation:=aString;
- END;
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetStdMethodImplementationStr(TheMethodItem:TMethodItem):Str255;
- VAR
- aString : Str255;
- theDeclaration: Str255;
- theClass: TItem;
- theClassName: str255;
-
- {$S ATextHandler}
- BEGIN
- theClass:= TheMethodItem.GetTheCard.GetTheClass;
- theClassName:= theClass.GetTheItem;
- aString:= SELF.GetAndEntabRsrcString(kStdMethodImplementationID);
- theDeclaration:= TheMethodItem.GetTheImplDeclaration;
- SELF.Replace(aString, '^0', theDeclaration);
- GetStdMethodImplementationStr:=aString;
- END;
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetFieldsMethodDecStr(TheFieldsMethodItem:TFieldsMethodItem):Str255;
- VAR
- aString : Str255;
- theClass: TItem;
- theClassName: str255;
-
- BEGIN
- aString:= GetAndEntabRsrcString(kFieldsMethodDecStr);
- theClass:= TheFieldsMethodItem.GetTheCard.GetTheClass;
- theClassName:= theClass.GetTheItem;
- SELF.Replace(aString, '^0', theClassName);
- GetFieldsMethodDecStr:=aString;
- END;
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetImplFieldsMethodDecStr(TheFieldsMethodItem:TFieldsMethodItem):Str255;
- VAR
- aString : Str255;
- theClass: TItem;
- theClassName: str255;
-
- BEGIN
- aString:= GetAndEntabRsrcString(kImplFieldsMethodDecStr);
- theClass:= TheFieldsMethodItem.GetTheCard.GetTheClass;
- theClassName:= theClass.GetTheItem;
- SELF.Replace(aString, '^0', theClassName);
- GetImplFieldsMethodDecStr:=aString;
- END;
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetFieldsMethodImpStr1:Str255;
- BEGIN
- GetFieldsMethodImpStr1:=GetAndEntabRsrcString(kFieldsMethodImpStr1);
- END;
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetFieldsMethodImpStr2(TheFieldsMethodItem:TFieldsMethodItem):Str255;
- VAR
- aString, theDeclaration: str255;
- theClass: TItem;
- theClassName: str255;
-
- BEGIN
- theClass:= TheFieldsMethodItem.GetTheCard.GetTheClass;
- theClassName:= theClass.GetTheItem;
- aString:= GetAndEntabRsrcString(kFieldsMethodImpStr2);
- SELF.Replace(aString, '^1', theClassName);
- GetFieldsMethodImpStr2:=aString;
- END;
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetFieldsMethodImpStr3:Str255;
-
- BEGIN
- GetFieldsMethodImpStr3:= GetAndEntabRsrcString(kFieldsMethodImpStr3);
- END;
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetFieldsMethodCodeLineStr(theFieldItem: TFieldItem):Str255;
- VAR
- aString : Str255;
-
- BEGIN
- aString:= GetAndEntabRsrcString(kFieldsMethodCodeLineStr);
- SELF.Replace(aString, '^0', theFieldItem.GetTheFieldStr);
- SELF.Replace(aString, '^1', theFieldItem.GetTheFieldsTypeConst);
- GetFieldsMethodCodeLineStr:=aString;
- END;
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetTheTypeName(index:ArrayIndex): Str63;
- VAR
- TheTypeTableElement : TTypeTableElement;
-
- BEGIN
- fTypeTable.GetElementsAt(index,@TheTypeTableElement,1);
- GetTheTypeName:= TheTypeTableElement.TypeName[SELF.GetLanguage];
- END;
-
- {$S ATextHandler}
- FUNCTION TTextHandler.ReturnFieldsTypeConst(theFieldItem: TFieldItem): str255;
-
- VAR
- count: ArrayIndex;
- aString,theTypeStr: str255;
- TheTypeTableElement : TTypeTableElement;
-
- BEGIN
- theTypeStr:= theFieldItem.GetItemType;
- aString:= 'bTitle';
- FOR count:=1 to fNumberOfElements DO
- IF SELF.GetTheTypeName(count) = theTypeStr THEN
- BEGIN
- fTypeTable.GetElementsAt(count,@TheTypeTableElement,1);
- aString:=TheTypeTableElement.FieldsTypeConst;
- END;
- ReturnFieldsTypeConst:= aString;
- END; {TTextHandler.ReturnFieldsTypeConst}
-
-
- {$S ATextHandler}
- FUNCTION TTextHandler.ReturnByAddress(theFieldItem: TFieldItem): BOOLEAN;
-
- VAR
- count: ArrayIndex;
- theTypeStr: str255;
- byAddress: BOOLEAN;
- TheTypeTableElement : TTypeTableElement;
-
- BEGIN
- theTypeStr:= theFieldItem.GetItemType;
- byAddress:= TRUE;
- FOR count:=1 to fNumberOfElements DO
- IF SELF.GetTheTypeName(count) = theTypeStr THEN
- BEGIN
- fTypeTable.GetElementsAt(count,@TheTypeTableElement,1);
- byAddress:=TheTypeTableElement.byAddress;
- END;
- ReturnByAddress:= byAddress;
- END; {TTextHandler.ReturnByAddress}
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetIncludeStatement:Str255;
- VAR
- theTitle, aString : Str255;
-
- BEGIN
- theTitle:=fDesignDocument.GetUnitName;
- aString:= GetAndEntabRsrcString(kIncludeStatementID);
- SELF.Replace(aString, '^0', SELF.GetImplementationFileName(theTitle));
- GetIncludeStatement:=aString;
- END; {TTextHandler.GetIncludeStatement}
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetFieldItemDeclaration(theFieldItem:TFieldItem):Str255;
- VAR
- aString : Str255;
-
- BEGIN
- aString:=GetAndEntabRsrcString(kFieldItemDeclarationStrID);
- SELF.Replace(aString, '^0', theFieldItem.GetTheItem);
- SELF.Replace(aString, '^1', theFieldItem.GetItemType);
- IF theFieldItem.GetPassByAddress THEN
- SELF.Replace(aString, '^4', '*')
- ELSE
- SELF.Replace(aString, '^4', kEmptyString);
- GetFieldItemDeclaration:= aString;
- END; {TTextHandler.GetFieldItemDeclaration}
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetFieldItemImplDeclaration(theFieldItem:TFieldItem):Str255;
- VAR
- aString : Str255;
-
- BEGIN
- aString:=GetAndEntabRsrcString(kFieldItemImplDeclarationStrID);
- SELF.Replace(aString, '^0', theFieldItem.GetTheItem);
- SELF.Replace(aString, '^1', theFieldItem.GetItemType);
- IF theFieldItem.GetPassByAddress THEN
- SELF.Replace(aString, '^4', '*')
- ELSE
- SELF.Replace(aString, '^4', kEmptyString);
- GetFieldItemImplDeclaration:= aString;
- END; {TTextHandler.GetFieldItemImplDeclaration}
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetCollaboratorDeclaration
- (theCollaboratorItem:TCollaboratorItem):Str255;
-
- VAR
- theDeclarationStr: str255;
-
- BEGIN
- theDeclarationStr:=GetAndEntabRsrcString(kCollaboratordeclarationStrID);
- SELF.Replace(theDeclarationStr, '^0', theCollaboratorItem.GetTheFieldStr);
- SELF.Replace(theDeclarationStr, '^1', theCollaboratorItem.GetItemType);
- GetCollaboratorDeclaration:= theDeclarationStr;
- END; {TTextHandler.GetCollaboratorDeclaration}
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetImplCollaboratorDeclaration
- (theCollaboratorItem:TCollaboratorItem):Str255;
-
- VAR
- theDeclarationStr: str255;
-
- BEGIN
- theDeclarationStr:=GetAndEntabRsrcString(kImplCollaboratorDeclarationStrID);
- SELF.Replace(theDeclarationStr, '^0', theCollaboratorItem.GetTheFieldStr);
- SELF.Replace(theDeclarationStr, '^1', theCollaboratorItem.GetItemType);
- GetImplCollaboratorDeclaration:= theDeclarationStr;
- END; {TTextHandler.GetImplCollaboratorDeclaration}
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetInterfaceFileName(theName: str255):Str255;
-
- VAR
- aString: str255;
-
- BEGIN
- SELF.CheckFileName(theName);
- aString:=GetAndEntabRsrcString(kInterfaceFileNameID);
- SELF.Replace(aString, '^0', theName);
- GetInterfaceFileName:= aString;
- END; {TTextHandler.GetInterfaceFileName}
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetImplementationFileName(theName: str255):Str255;
-
- VAR
- aString: str255;
-
- BEGIN
- SELF.CheckFileName(theName);
- aString:=GetAndEntabRsrcString(kImplementationFileNameID);
- SELF.Replace(aString, '^0', theName);
- GetImplementationFileName:= aString;
- END; {TTextHandler.GetImplementationFileName}
-
- {typeTable methods}
- {$S ATextHandler}
- PROCEDURE TTextHandler.ReadInTypeTable;
- CONST
- kStartingTableSize = 50;
-
- VAR
- index: Integer;
- DAIndex: ArrayIndex;
- TheNewElement: TTypeTableElement;
- TheNewTypeTable: TDynamicArray;
- aString : Str255;
-
- FUNCTION GetFieldsTypeConst(Element: Integer): Str63;
- VAR
- aString: Str255;
-
- BEGIN
- GetIndString(aString,kTypeTableID,(Element*kTypeTableWidth) + kFieldsTypeOffset);
- GetFieldsTypeConst:= Concat(aString);
- END;
-
- FUNCTION GetByAddress(Element: Integer): Boolean;
- VAR
- aString: Str255;
-
- BEGIN
- GetIndString(aString,kTypeTableID,(Element*kTypeTableWidth) + kByAddressOffset);
- GetByAddress:= (aString <> 'n');
- END;
-
- BEGIN
- NEW(TheNewTypeTable);
- FailNIL(TheNewTypeTable);
- fTypeTable:=TheNewTypeTable;
- fTypeTable.IDynamicArray(kStartingTableSize,SizeOf(TTypeTableElement));
- fnumberOfElements:=0;
- GetIndString(aString,kTypeTableID,1);
- WHILE aString<>kEmptyString DO
- BEGIN
- WITH TheNewElement DO
- BEGIN
- TypeName[1]:=Concat(aString);
- FOR index:=2 to kNumberOfLanguages DO
- BEGIN
- GetIndString(aString,kTypeTableID,(fnumberOfElements*kTypeTableWidth) + index);
- TypeName[index]:=Concat(aString);
- END;
- FieldsTypeConst:=GetFieldsTypeConst(fnumberOfElements);
- byAddress:=GetByAddress(fnumberOfElements);
- fnumberOfElements:=fnumberOfElements+1;
- GetIndString(aString,kTypeTableID,(fnumberOfElements*kTypeTableWidth)+1);
- END;
- fTypeTable.InsertElementsBefore(1, @TheNewElement, 1);
- END;
- END; {TTextHandler.ReadInTypeTable}
-
-
- {$S ATextHandler}
- PROCEDURE TTextHandler.SetItemTypeMenu(thePopupMenu : TPopup);
- CONST
- kMenuID = 999;
-
- VAR
- TheLanguage : Integer; {this tells us whether we are reading pascal or c++}
- RecordNumber : Integer;
- aString : Str255;
- theNewMenu : MenuHandle;
-
- FUNCTION TheItemNumber:INTEGER;
- BEGIN
- TheItemNumber:=(RecordNumber*kTypeTableWidth)+TheLanguage;
- END;
-
- BEGIN
- TheLanguage:=SELF.GetLanguage;
- RecordNumber:=0;
- theNewMenu:=NewMenu(kMenuID,'Type: ');
- FailNILResource(theNewMenu);
-
- GetIndString(aString, kTypeTableID, TheItemNumber);
- WHILE aString <> kEmptyString DO
- BEGIN
- AppendMenu(theNewMenu,aString);
- RecordNumber:=RecordNumber+1;
- GetIndString(aString, kTypeTableID, TheItemNumber);
- {writeln(aString);}
- END;
- ThePopupMenu.SetPopup(theNewMenu, kNoResource, 1, kReDraw);
- END; {TTextHandler.SetItemTypeMenu}
-
-
- {$S ATextHandler}
- PROCEDURE TTextHandler.SetSuperClassTypeMenu(thePopupMenu : TPopup);
- CONST
- kMenuID = 998;
-
- VAR
- TheLanguage : Integer; {this tells us whether we are reading pascal or c++}
- RecordNumber : Integer;
- aString : Str255;
- theNewMenu : MenuHandle;
- theCardList: TList;
-
- PROCEDURE AddCardToMenu(aCard: TCard);
- VAR
- aString: Str255;
-
- BEGIN
- aString:= aCard.GetTheClass.GetTheName;
- InsMenuItem(theNewMenu,aString,RecordNumber);
- RecordNumber:=RecordNumber+1;
- END;
-
- BEGIN
- {writeln('In SetSuperClassTypeMenu');}
- RecordNumber:=1;
- theNewMenu:=NewMenu(kMenuID,'');
- FailNILResource(theNewMenu);
-
- GetIndString(aString, kObjectMenuID, RecordNumber);
- WHILE aString <> kEmptyString DO
- BEGIN
- AppendMenu(theNewMenu,aString);
- RecordNumber:=RecordNumber+1;
- GetIndString(aString, kObjectMenuID, RecordNumber);
- {writeln(aString);}
- END;
-
- {Insert two blank lines}
- InsMenuItem(theNewMenu,CONCAT('(',kBlankLine,';(',kBlankLine),1);
-
- {now insert the names of all the cards between the blank lines}
- RecordNumber:=2;
- theCardList:= SELF.GetDesignDocument.GetCardList;
- theCardList.Each(AddCardToMenu);
-
- {and set the menu}
- ThePopupMenu.SetPopup(theNewMenu, kNoResource, 1, kReDraw);
- { writeln('Out SetSuperClassTypeMenu');}
- END; {TTextHandler.SetSuperClassTypeMenu}
-
- {$S ATextHandler}
- PROCEDURE TTextHandler.SetCollaboratorsMenu(thePopupMenu : TPopup);
- BEGIN
- SELF.SetSuperClassTypeMenu(thePopupMenu);
- END; {TTextHandler.SetCollaboratorsMenu}
-
- {$S ATextHandler}
- PROCEDURE TTextHandler.ChangeLanguageTo(TheNewLanguage:Integer);
-
- VAR
- TheDesignDocument : TDesignDocument;
- TheOldLanguage : Integer;
-
- PROCEDURE TranslateTheCards(TheCard : TCard);
- VAR
- TheFieldList : TMyList;
- BEGIN
- TheCard.TranslateTheCard(TheOldLanguage, TheNewLanguage);
- END; {TranslateTheItems}
-
- BEGIN
- TheOldLanguage:=SELF.GetLanguage;
- TheDesignDocument:=SELF.fDesignDocument;
- SELF.SetLanguage(TheNewLanguage);
- TheDesignDocument.GetCardList.EACH(TranslateTheCards);
- END; {TTextHandler.ChangeLanguageTo}
-
- {$S ATextHandler}
- FUNCTION TTextHandler.FindTypeTableEntry(TheLanguage : Integer; TheItem: TFieldItem):ArrayIndex;
- VAR
- index,wherefound : ArrayIndex;
- TheItemType : Str255;
- TheArrayElement: TTypeTableElement;
-
- BEGIN
- TheItemType:=TheItem.GetItemType;
- whereFound := kTableEntryNotFound;
- index:=1;
- WHILE (whereFound= kTableEntryNotFound) AND (index<=fNumberOfElements) DO
- BEGIN
- fTypeTable.GetElementsAt(index,@TheArrayElement,1);
- IF TheArrayElement.TypeName[TheLanguage]=TheItemType THEN
- IF TheArrayElement.byAddress = TheItem.fPassByAddress THEN
- whereFound:=index;
- index:= index + 1;
- END;
- FindTypeTableEntry:=whereFound;
- END; {TTextHandler.FindTypeTableEntry}
-
- {$S ATextHandler}
- PROCEDURE TTextHandler.TranslateTheItem(TheOldLanguage, TheNewLanguage: Integer;
- TheItem: TFieldItem);
-
- VAR
- TheItemType : Str255;
- whereFound : ArrayIndex;
- TheArrayElement: TTypeTableElement;
-
- BEGIN
- TheItemType:=TheItem.GetItemType;
- whereFound := FindTypeTableEntry(TheNewLanguage, TheItem);
- IF whereFound = kTableEntryNotFound THEN
- BEGIN
- whereFound := FindTypeTableEntry(TheOldLanguage, TheItem);
- IF whereFound <> kTableEntryNotFound THEN
- BEGIN
- fTypeTable.GetElementsAt(whereFound,@TheArrayElement,1);
- TheItem.SetItemType(TheArrayElement.TypeName[TheNewLanguage]);
- END;
- END;
- END;
-
- {$S ATextHandler}
- PROCEDURE TTextHandler.CheckFileName(VAR theName: str255);
-
- VAR
- index: 0..255;
- legalChars: SET OF CHAR;
- done: boolean;
-
- BEGIN
- legalChars:= ['a'..'z', 'A'..'Z', '0'..'9', '_'];
- index:= 1;
- WHILE index < Length(theName) DO
- BEGIN
- done:= false;
- WHILE (NOT (theName[index] IN legalChars)) AND (NOT done) DO
- IF Length(theName) < index THEN
- done:= true
- ELSE
- Delete(theName, index, 1);
- index:= index + 1;
- END;
- END; {TTextHandler.CheckFileName}
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetInlineSetAccessorStr(TheSetAccessorItem:TSetAccessorItem):Str255;
- VAR
- theCard: TCard;
- aString : Str255;
- theClass: TItem;
-
- BEGIN
- theCard:= TheSetAccessorItem.GetTheCard;
- theClass:= theCard.GetTheClass;
- aString:= GetAndEntabRsrcString(kInlineSetAccessorID);
- SELF.Replace(aString, '^0', theClass.GetTheItem);
- SELF.Replace(aString, '^1', TheSetAccessorItem.GetTheItem);
- SELF.Replace(aString, '^2', TheSetAccessorItem.GetFieldAccessed.GetItemType);
- SELF.Replace(aString, '^3', TheSetAccessorItem.GetParameter);
- IF TheSetAccessorItem.fFieldAccessed.GetPassByAddress THEN
- SELF.Replace(aString, '^4', '*')
- ELSE
- SELF.Replace(aString, '^4', kEmptyString);
- SELF.Replace(aString, '^5', TheSetAccessorItem.GetFieldAccessed.GetTheFieldStr);
- GetInlineSetAccessorStr:=aString;
- END;
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetInlineGetAccessorStr(TheGetAccessorItem:TGetAccessorItem):Str255;
- VAR
- theCard: TCard;
- aString : Str255;
- theClass: TItem;
-
- BEGIN
- theCard:= TheGetAccessorItem.GetTheCard;
- theClass:= theCard.GetTheClass;
- aString:= GetAndEntabRsrcString(kInlineGetAccessorID);
- SELF.Replace(aString, '^0', theClass.GetTheItem);
- SELF.Replace(aString, '^1', TheGetAccessorItem.GetTheItem);
- SELF.Replace(aString, '^2', TheGetAccessorItem.GetFieldAccessed.GetItemType);
- SELF.Replace(aString, '^5', TheGetAccessorItem.GetFieldAccessed.GetTheFieldStr);
- IF TheGetAccessorItem.fFieldAccessed.GetPassByAddress THEN
- SELF.Replace(aString, '^4', '*')
- ELSE
- SELF.Replace(aString, '^4', kEmptyString);
- GetInlineGetAccessorStr:=aString;
- END;
-
- {$S ATextHandler}
- FUNCTION TTextHandler.GetFwdClassDeclStr(TheCard:TCard):Str255;
- VAR
- aString : Str255;
- theClass: TItem;
-
- BEGIN
- theClass:= TheCard.GetTheClass;
- aString:= GetAndEntabRsrcString(kFwdClassDeclID);
- SELF.Replace(aString, '^0', theClass.GetTheItem);
- GetFwdClassDeclStr:=aString;
- END;
-
- {$S AClose}
- PROCEDURE TTextHandler.Free; OVERRIDE;
- BEGIN
- fTypeTable.Free;
- INHERITED Free;
- END; {TTextHandler.Free}
-
- {$S AFields}
- PROCEDURE TTextHandler.Fields(PROCEDURE DoToField(
- fieldName: Str255; fieldAddr: Ptr; fieldType: INTEGER)); OVERRIDE;
-
- BEGIN
- DoToField('TTextHandler', NIL, bClass);
- DoToField('fDesignDocument', @fDesignDocument, bObject);
- DoToField('fTypeTable', @fTypeTable, bObject);
- DoToField('fLanguage', @fLanguage, bINTEGER);
- INHERITED Fields(DoToField);
- END;
-
-